package com.liushao.service.impl;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.liushao.config.ContantsProperties;
import com.liushao.service.FileService;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.UUID;

/**
 * @author 陈修华
 * @ClassName FileServiceImpl
 * @description: TODO
 * @datetime 2025年 1月 08日 16:00
 * @version: 1.0
 */
@Service
public class FileServiceImpl implements FileService {

    @Override
    public String upload(InputStream inputStream, String module, String fileName) {

        // Endpoint以华东1（杭州）为例，其它Region请按实际情况填写。
      //  String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。

        // 填写Bucket名称，例如examplebucket。
       // String bucketName = "examplebucket";
        // 填写Object完整路径，例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
       // String objectName = "exampledir/exampleobject.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(
                ContantsProperties.ENDPOINT,
                ContantsProperties.ACCESS_KEY_ID,
                ContantsProperties.ACCESSKEY_SSECRET);

        String key ="";

        try {
        if(!ossClient.doesBucketExist(ContantsProperties.BUCKET_NAME)){
            //如果不存在就创建一下
            ossClient.createBucket(ContantsProperties.BUCKET_NAME);
        }

        //设置路径问题  使用日期进行存储
        String folder = new DateTime().toString("yyyy/MM/dd");
        //文件名 不能使用原名  liushao.jpg
        fileName = UUID.randomUUID().toString()+fileName.substring(fileName.lastIndexOf("."));

      key= module+"/"+folder+"/"+fileName;

        //上传

        ossClient.putObject(ContantsProperties.BUCKET_NAME,key,inputStream);
        
        } catch (Exception ce) {
             ce.printStackTrace();
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
      //  url": "https://jinrong-heda.https://oss-cn-hangzhou.aliyuncs.com/test/2025/38/07/9fd1cae8-d92c-4b6e-b1ec-8c7bd684e0cc.jpg"
     //
       //   // https://jinrong-heihei.oss-cn-beijing.aliyuncs.com/up/2024/07/02/3c81a1c4-10ea-4f32-8e83-781c69a125ab.png
        return "https://"+ContantsProperties.BUCKET_NAME+"."+ContantsProperties.ENDPOINT+"/"+key;
    }
}
